/*******************************************************************
 * 外语翻译平台(translate) 
 *
 * 成都一亿信息技术公司 版权所有
 * 
 * Copyright (C) 2010 Transer Information Technology Co., Ltd.
 *
 * @Version : 1.0  2011-1-9 上午01:27:15
 *
 * IProjectDao.java 
 *
 *******************************************************************/
package com.transer.persistance.dao;

import java.util.List;
import java.util.Map;

import com.transer.persistance.bean.Project;
import com.transer.persistance.exception.TranserDatabaseException;

/**
 * class defination are there
 * 
 * @author Mark
 * 
 * @version 1.0 ywengineer@gmail.com
 * 
 */
public interface IProjectDao extends DatabaseDao {
	/**
	 * 添加项目
	 * 
	 * @param project
	 *            项目
	 * @return
	 * @throws TranserDatabaseException
	 */
	int addProject(Project project) throws TranserDatabaseException;

	/**
	 * 获取项目
	 * 
	 * @param id
	 *            项目ID
	 * @return
	 * @throws TranserDatabaseException
	 */
	Project getProjectInfo(int id) throws TranserDatabaseException;

	/**
	 * 获取项目
	 * 
	 * @param id
	 *            项目ID
	 * @return
	 * @throws TranserDatabaseException
	 */
	Project getProjectDetail(int id) throws TranserDatabaseException;

	/**
	 * 搜索项目数量
	 * 
	 * @param keys
	 *            关键字
	 * @return 数量
	 * @throws TranserDatabaseException
	 */
	int findProjectSize(String keys) throws TranserDatabaseException;

	/**
	 * 搜索项目
	 * 
	 * @param keys
	 *            关键字
	 * @param skipResults
	 *            开始下标
	 * @param maxResults
	 *            最大记录
	 * @return 项目列表
	 * @throws TranserDatabaseException
	 */
	List<Project> findProject(String keys, int skipResults, int maxResults) throws TranserDatabaseException;

	/**
	 * 
	 * 获取已发布项目数量
	 * 
	 * @param userID
	 *            用户ID
	 * @return
	 * @throws TranserDatabaseException
	 */
	int getPublishedSize(int userID) throws TranserDatabaseException;

	/**
	 * 获取用户发布的项目
	 * 
	 * @param userID
	 *            用户ID
	 * @param projectStatus
	 *            项目状态
	 * @param size
	 *            大小
	 * @return
	 * @throws TranserDatabaseException
	 */
	List<Project> getPublishedProjects(int userID, int projectStatus, int size) throws TranserDatabaseException;

	/**
	 * 更新项目
	 * 
	 * @param project
	 *            项目
	 * @throws TranserDatabaseException
	 */
	void updateProject(Project project) throws TranserDatabaseException;

	/**
	 * 搜索项目数量
	 * 
	 * @param params
	 *            关键字
	 * @return 数量
	 * @throws TranserDatabaseException
	 */
	int findProjectSize(Map<String, Object> params) throws TranserDatabaseException;

	/**
	 * 搜索项目
	 * 
	 * @param params
	 *            关键字
	 * @param skipResults
	 *            开始下标
	 * @param maxResults
	 *            最大记录
	 * @return 项目列表
	 * @throws TranserDatabaseException
	 */
	List<Project> findProject(Map<String, Object> params, int skipResults, int maxResults) throws TranserDatabaseException;
}
